Packet-based multiplication-free CCK demodulator with a fast multipath interference cipher

ABSTRACT

An optimal algorithmic structure is provided for use in a RAKE receiver to compute multipath interferences (MPIs) required for canceling intra-codeword chip interference (ICI). The algorithmic structure jointly computes the ICI of a plurality of possible codewords. This algorithmic structure is similar to the optimal architecture required for CCK correlation computations. The similarity between these two structures allows for the use of the same hardware at different times to compute MPIs and to compute the CCK correlation of a plurality of possible codewords.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates to wireless communication systems, such as but not limited to wireless local area networks (WLANs), and in particular, to an 802.11b receiver that contains a packet-based multiplication-free CCK demodulator with a Fast Multipath Interference Cipher (FMIC).

[0003] 2. Description of the Prior Art

[0004] U.S. patent application Publication No. US 2001/0036223 to Webster et al. (“Webster”) discloses a RAKE receiver that is used for indoor multipath WLAN applications on direct spread spectrum signals having relatively short codeword lengths. The RAKE receiver has an embedded decision feedback equalizer structure in the signal processing path through the receiver's channel matched filter and codeword correlator. The decision feedback equalizer serves to cancel inter-codeword interference (also known as Inter-Symbol Interference, [SI) (i.e., bleed-over between CCK codewords).

[0005] FIGS. 12-14 of Webster illustrate an Intra-codeword Chip Interference (ICI) canceller which is designed to cancel the ICI generated from the post-cursors through the use of lengthy complex operations (multiplications and additions), including one DFE convolution block and one codeword correlation block for each and every codeword (up to 256 codewords in total), in a 802.11b CCK Decoder. Each of the 64 or 256 ICI outputs is calculated independently from a separate processing path.

[0006] In FIG. 12 of Webster, for each and every codeword (256 codewords in total), three basic building blocks are required: (i) one DFE convolution block 1220 which calculates chip-by-chip representation of the ICI before the codeword correlator 1230 using the complex convolution between each codeword (8 complex chips denoted as OW#k CHIP) and up to 8 complex DFE taps, (ii) one chip-by-chip subtractor 1210 which subtracts each of the 8 received complex chips (block 1203) from the outputs of block 1220, and (iii) one codeword correlator 1230 which calculates the correlation between each codeword (8 complex chips) and the results (8 complex chips) from the subtractor 1210. All these operations are complex and are required for each codeword. In short, 256 ICI bias outputs 1212 are calculated independently at blocks 1220, subtracted in parallel at blocks 1210, and then 256 correlations outputs are found from the codeword correlators 1230. Because the input 1223 to each codeword correlator 1230 is now different after the ICI bias correction, this architecture prevents a fast Walsh transform implementation to jointly and effectively calculate the CCK correlations for all CCK codewords.

[0007] In another embodiment illustrated in FIG. 13 of Webster, for each and every codeword (64 codewords in total), two basic building blocks (which have the same functions described above) are required: (i) one DFE convolution block 1340 and (ii) one codeword correlator 1330. The number of DFE blocks and correlation blocks required is simplified from 256 to 64. The 64 ICI outputs of blocks 1330 are expanded into 256 ICI outputs from complex operations. Compared to FIG. 12, this architecture calculates the ICI bias for post-CCK codeword correlator correction 1360. Therefore, a codeword correlator to jointly and effectively compute CCK correlations can be effectively implemented using a 64 element fast Walsh transform 1320 and a 1 to 4 expansion 1350. However, each of the 64 post-correlation ICI bias is first calculated using complex convolution 1340 and complex correlation 1330. A 1 to 4 expansion 1330 is then used to generate all 256 post-correlation ICI bias These post-correlation ICI bias are then subtracted from the corresponding 256 correlator outputs of block 1350. To implement this receiver architecture, 64 complex convolution 1340 and complex codeword correlator 1330 need to be performed independently.

[0008] In yet another embodiment in FIG. 14 of Webster, for each and every codeword (256 codewords in total), two basic building blocks (which have the same functions described above) are also required: (i) one DFE convolution block 1440 and (ii) one complex codeword correlator 1430. Webster states the fact that the DFE taps can be pre-calculated and pre-stored. Again, the 256 ICI outputs are calculated independently at blocks 1440, and then 256 correlations are found at the outputs of block 1430.

[0009] In summary, Webster's architecture requires significant hardware complexity and the execution of large numbers of complex operations (complex multiplications and additions that are required for complex convolution and complex correlation). As a result, large power consumption, complex hardware, and long processing times will be required to implement the embodiments described in FIGS. 12-14 of Webster.

SUMMARY OF THE DISCLOSURE

[0010] It is an object of the present invention to provide a CCK receiver which utilizes a reduced number of complex operations.

[0011] It is another object of the present invention to simplify the hardware for a CCK receiver.

[0012] In order to accomplish the objects of the present invention, the present invention provides an optimal algorithmic structure for use in a RAKE receiver to compute multipath interferences (MPIS) required for canceling intra-codeword chip interference (ICI). The algorithmic structure jointly computes the ICI of a plurality of possible codewords. This algorithmic structure is similar to the optimal architecture required for CCK correlation computations. Therefore, the present invention takes advantage of this similarity between these two structures and uses the same hardware at different times to compute MPIs and to compute the CCK correlation of a plurality of possible codewords.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013]FIG. 1 illustrates a simplified 802.11b packet format.

[0014]FIG. 2 illustrates a receiver according to one embodiment of the present invention.

[0015]FIG. 3 illustrates an example of Channel Impulse Estimation (CIR) results.

[0016]FIG. 4 illustrates the Shared Hardware of the receiver of FIG. 2.

[0017]FIG. 5 illustrates the CCK Decoder of the receiver of FIG. 2.

[0018]FIG. 6 illustrates an example of the multipath interference of the receiver of FIG. 2.

[0019]FIG. 7 illustrates a basic hardware building block that can be reused to implement a Fast Multipath Transform (FMT) and a Fast Walsh Transform (FWT).

[0020]FIG. 8 illustrates one embodiment of the CCK Correlator of FIG. 4.

[0021]FIG. 9 illustrates a Multipath Interference Canceller and Maximum Selector (MIC & MS) block of the CCK Decoder of FIG. 5.

[0022]FIG. 10 illustrates one embodiment of an FMIC block of FIG. 4.

[0023]FIG. 11 illustrates another embodiment of an FMIC block of FIG. 4.

[0024]FIG. 12 illustrates yet another embodiment of an FMIC block of FIG. 4.

[0025]FIG. 13 illustrates a half FMWT block.

[0026]FIG. 14 is a table illustrating the inputs and outputs of the Mappers used in FIGS. 10-12.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0027] The following detailed description is of the best presently contemplated modes of carrying out the invention. This description is not to be taken in a limiting sense, but is made merely for the purpose of illustrating general principles of embodiments of the invention. The scope of the invention is best defined by the appended claims. In certain instances, detailed descriptions of well-known devices, components, mechanisms and methods are omitted so as to not obscure the description of the present invention with unnecessary detail.

[0028] A simplified 802.11b Packet format is shown in FIG. 1 and contains two modes of operation. The preamble of a packet (Mode 1) is Barker-code encoded and the data portion (Mode 2) is modulated in Complementary Code Keying (CCK) to provide encoded CCK chips. Since the two modes are not operating at the same time, the hardware can be shared in Modes 1 and 2 to reduce hardware complexity.

[0029] A receiver 20 is illustrated in FIG. 2. An 802.11b transmitter transmits a data packet at a time for a receiver 20 to process. When a CCK modulated packet is transmitted, each 8 data bits is CCK encoded to 8 complex chips (called one CCK symbol) that are transmitted sequentially on a chip-by-chip basis by the 802.11b transmitter. This signal travels through a wireless channel and arrives at an 802.11 receiver such as receiver 20. A typical wireless channel is characterized by multipath propagation which distorts the received signal. Thus, it is important to implement a cost-effective and performance-effective receiver to mitigate the multipath distortion. The receiver 20 has a first selector 22 which routes a received signal to one of two paths. The first selector 22 connects the first path (Mode 1) during preamble processing and connects the second path (Mode 2) when decoding the received CCK symbols.

[0030] The receiver 20 has a CIR (channel impulse response) estimation block 24 having inputs coupled to the first selector 22, and outputs coupled to a Channel Matched Filter (CMF) block 28 (which has inputs coupled to the first selector 22), a Decision-Feedback Equalizer (DFE) block 30 (which has inputs coupled to the CMF block 28), and a second selector 26. A multiplexer 34 (MUX) has inputs coupled to the DFE block 30 and outputs coupled to the second selector 26. A Shared Hardware (SH) block 36 has inputs coupled to the second selector 26 and outputs coupled to a CCK Decoder 38. As described below, the SH block 36 can be either a Fast-Multipath-Interference-Cipher (FMIC) block 36 a or a CCK Correlator 36 b, depending on the Mode of operation. The output of the CCK Decoder 36 is provided to an input of a CCK remodulation (Remod) block 32, which has outputs coupled to the DFE block 30. The Mode 1 and Mode 2 signals are provided to the selectors 22, 26, the SH block 36, and the CCK Decoder 38. During Mode 1 operation, the second selector 26 routes the 8 inputs from the CIR Estimation block 24 to the SH block 36. During Mode 2 operation, the second selector 26 routes the 8 inputs from the MUX 34 to the SH block 36. The details of the operations will be described below. The output of the CCK Decoder 38 is an 8-bit index of the decoded CCK codeword. This index also represents the 8-bit decoded data.

[0031] Although FIG. 2 illustrates the provision of the DFE block 30 and the CCK remod block 32, these two blocks are optional and can be omitted if ISI due to multipath propogation from the previous symbol is minimal.

[0032] During the Mode 1 operation, the CIR estimation block 24 uses Barker code correlation to determine an estimated channel impulse response. The outputs of the CIR estimation 24 are the Feedback (FB) and Feed-forward (FF) tap weights corresponding to the post- and pre-cursor parts of a multipath profile. The CIR Estimation block 24 works in Mode 1 during preamble processing for each packet. During Mode 1 operations, the SH block 36 (in Mode 1, it is the FMIC block 36 a) uses these FB and FF taps as inputs to jointly and effectively calculate 64 (or 32, or 16, or 8) Multipath Interferences (MPIs). An innovative architecture for the computation of the MPIs will be shown later. It will also be shown that this new architecture to compute MPIs actually requires essentially no additional hardware.

[0033] The MPIs provided by the FMIC block 36 a is a post-correlation representation of the Intra-codeword Chip Interference (ICI) due to the currently received CCK symbol (8 chips long). The multipath profile is assumed to be unchanged during a packet period. Therefore, the MPIs are calculated only once for each packet in Mode 1. These MPIs will be used later in Mode 2 when the CCK Decoder 38 cancels out the effect of the ICI by subtracting the corresponding MPI values from its correlator outputs. The same hardware that is used to implement the FMIC operation in Mode 1 is used to implement the CCK Correlator block 36 b in Mode 2. In other words, the same hardware is “shared”, or used to perform two different functions at two different times.

[0034] During Mode 2 operation, the Channel Estimation block 24 provides the CMF tap weights for the CMF block 28 to coherently combine the energy of the received signal through a multipath channel. The DFE block 30 uses the FB tap weights from CIR Estimation block 24 to cancel the ISI from the previous CCK symbol. The previous symbol was decoded in the CCK decoder block 38 and was re-modulated by the CCK Remod block 32.

[0035] The MUX 34 groups every eight complex chips (one CCK symbol) after the DFE block 30. The second selector 26 then routes the outputs from MUX 34 to the SH block 36. The SH block 36 operates as a CCK Correlator 36 b during Mode 2. Finally, the CCK Decoder 38 is utilized to find an index of a CCK codeword having the maximum correlation between the received signal (represented by 8 received chips) and all possible CCK codewords. This index is the decoded 8-bit data.

[0036]FIG. 3 illustrates an example of a CIR Estimation result. The chip period is denoted as T_(c). Generally speaking, seven or eight FF and FB complex taps (i.e., about one CCK symbol period each), are estimated from the CIR Estimation block 24. The estimated FF and FB tap weights (the multipath profile) are denoted as F_(i) and B_(i) (i=1, 2, . . . 7 or 8), respectively.

[0037] The operations of the Shared Hardware 36 are shown in FIG. 4. The second selector 26 is omitted from FIG. 4, and the corresponding eight inputs from the second selector 26 are shown directly. During Mode 1, four FF taps and four FB taps estimated from the CIR Estimation block 24 are provided to the FMIC block 36 a. The 64 MPI outputs are denoted as c_(i), i=1, 2, . . . , 64. During Mode 2, the eight-chip outputs of the MUX 34 (denoted as r₁ to r₈) are provided to the CCK Correlator 36 b. The CCK Correlator 36 b applies Fast Walsh Transform (FWT) to calculate the correlations of the eight received chips and 64 codewords. The 64 CCK correlation outputs are denoted as X_(i), i=1, 2, . . . , 64.

[0038] The CCK Decoder 38 is illustrated in FIG. 5. The CCK Decoder 38 has a Selector 42, an MPI Mapper 44, and a Multipath Interference Canceller and Maximum Selector (MIC & MS) block 46. During Mode 1, the 64 MPI outputs from FMIC block 36 a are permuted and stored in the MPI Mapper block 44. The permuted MPI outputs (denoted as Y_(i),I=1, 2, . . . , 64) are the corresponding ICI distortions to all 256 codewords. During Mode 2, the 64 correlation outputs are coupled to the MIC & MS block 46. The corresponding ICI distortions are then subtracted from the CCK correlation outputs in the MIC & MS block 46. The detailed implementation of FIG. 5 will be described later.

[0039] A CCK modulated symbol (8 chips long) designed for an 802.11b system is described in IEEE Std. 802.11b, D8.0, IEEE Standards Department, Piscataway, N.J., September 2001, whose disclosure is incorporated by this reference as though set forth fully herein. Each codeword described by a vector is given by

C≡[c _(k) ]=e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(+φ) ^(₃) ^(+φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₃) ^(+φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(+φ) ^(₄) ⁾ , −e ^(j(φ) ^(₁) ^(+φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(+φ) ^(₃) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₃) ⁾ ,−e ^(j(φ) ^(₁) ^(+φ) ^(₂) ⁾ , e ^(jφ) ^(₁) ]^(T)

[0040] Each of four encoded phases, φ₁, φ₂, φ₃, and φ₄ has one of the following four values: 0, π2, π, or 3π/2. Therefore, there are 4⁴=256 codewords. An optimal demodulator is to find one of the 256 codewords which has the maximum correlation with the received CCK symbol. In internal testing done by the inventors, the 256 CCK correlation outputs generated from a well-known Fast-Walsh-Transform (FWT) is given by: $\begin{matrix} \begin{matrix} {{{W\left( {\varphi_{1},\varphi_{2},\varphi_{3},\varphi_{4}} \right)} \equiv {R^{H}C}} = {\sum\limits_{k = 1}^{8}{r_{k}^{*}c_{k}}}} \\ {= \left\{ {{\left\lbrack {{\left( {{r_{1}^{*}^{j\quad \varphi_{2}}} + r_{2}^{*}} \right)^{j\quad \varphi_{3}}} + \left( {{r_{3}^{*}^{j\quad \varphi_{2}}} - r_{4}^{*}} \right)} \right\rbrack ^{j\quad \varphi_{4}}} +} \right.} \\ {\left. {{\left( {{r_{5}^{*}^{j\quad \varphi_{2}}} + r_{6}^{*}} \right)^{j\quad \varphi_{3}}} + \left\lbrack {{{- r_{7}^{*}}^{j\quad \varphi_{2}}} + r_{8}^{*}} \right\rbrack} \right\} ^{j\quad \varphi_{1}}} \end{matrix} & {{Eq}.\quad (1)} \end{matrix}$

[0041] where r_(i) (i=1, 2, 3, . . . , 8) is the received CCK symbol (8 complex chips), and the notations, star ‘*’ and minus ‘−’, denote the complex conjugate and the complex negative (or subtraction) of a complex number, respectively. The Fast Walsh Transform (FWT) is a well-known algorithm that calculates all 64 or 256 correlations jointly with a minimal number of mathematical operations (multiplications and/or additions) and hardware processing time. Features of a FWT include:

[0042] (1) A common complex factor, e^(jφ1), which has one of the following values (1,j−1 and −j), is found for all 256 correlation outputs. Therefore, it is only necessary to calculate 64 correlation outputs to expand to 256 outputs.

[0043] (2) The 64 (or 256) CCK correlation outputs are “jointly” (but not independently) calculated.

[0044] (3) All common factors of all 64 (or 256) correlations are calculated only once in the intermediate steps (i.e., the number of complex calculations are minimized).

[0045] (4) For any 802.11b receiver, significant hardware and processing time are still required to implement this CCK Correlator 40 to operate in Mode 2. However, the hardware to perform CCK correlation would be idle during Mode 1.

[0046] The present invention shows that essentially the same hardware for CCK correlation can also be used during Mode 1 to calculate the MPIs. In other words, the present invention eliminates the need for all (64 or 256) complex convolutions and correlations required in Webster.

[0047]FIG. 6 illustrates an example of the ICI at the CCK correlator 36 b output using three transmitted CCK codewords (P, C, and N, 8 chips each). A particular multipath profile with three multipaths is assumed: one pre-cursor F₁, one desired signal path h₀, and one post-cursor with a complex gain B₁. The received signal vector has one desired signal path plus two ICIs from the un-desired multipaths. In short, the received signal vector can be described as

R=h ₀ +C+B ₁ [C ⁽⁺¹⁾ ]+F ₁ C ⁽⁻¹⁾

[0048] The first term in the above equation represents the desired signal vector. The post- and pre-cursor ICIs are described as the right- and left-shifts of the transmitted codeword vector, C, respectively. Then, the CCK Decoder 38 is applied to find one codeword, out of 256 correlation results, having the maximal correlation, R^(H)C, with the received signal vector, i.e.:

R ^(H) C=h* ₀ C ^(H) C+B* ₁ [C ⁽⁺¹⁾]^(H) C+F* ₁ [C ⁽⁻¹⁾]^(H) C

[0049] where the notation, ^(,H’), denotes a complex conjugate and transpose operation of the received signal vector. The last two terms in the above equation are the ICIs from the pre-cursor and the post-cursor that may cause an incorrect decoding decision and degrade the system performance.

[0050] In general, the ICIs of the received signal vector with a MP profile shown in FIG. 3 is given by $R \equiv {{h_{0}C} + {\sum\limits_{k = 1}^{7}\left\{ {{F_{k}\left\lbrack C^{({- k})} \right\rbrack} + {B_{k}\left\lbrack C^{({+ k})} \right\rbrack}} \right\}}}$

[0051] which has 7 pre-cursors, 7 post-cursors, and one desired signal path. Therefore, the output of the CCK Correlator 36 b is given by ${{R^{H}C} = {{h_{0}^{*}C^{H}C} + {ICI}}};{{{where}\quad {ICI}} \equiv {\sum\limits_{k = 1}^{7}\left\{ {{{F_{k}^{*}\left\lbrack C^{({- k})} \right\rbrack}^{H}C} + {{B_{k}^{*}\left\lbrack C^{({+ k})} \right\rbrack}^{H}C}} \right\}}}$

[0052] In the present invention, the ICIs from both pre-cursors and post-cursors will be calculated as follows using the FMIC block 36 a and then cancelled in the CCK Decoder block 38.

[0053] It is observed that the ICI of the received signal vector is a summation of shifted versions of the desired codeword. For examples, the ICIs from the pre-cusor F₁ and the post-cursor B₁ are given by

F ₁ C ⁽⁻¹⁾ ≡F ₁[e^(j(φ) ^(₁) ^(+φ) ^(₃) ^(30 φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(+φ) ^(₄) ⁾ ,−e ^(j(φ) ^(₁) ^(+φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(+φ) ^(₃) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₃) ⁾ ,−e ^(j(φ) ^(₁) ^(+φ) ^(₂) ⁾ ,e ^(jφ) ^(₁) ,0]^(T)

B ₁ C ⁽⁺¹⁾ ≡B ₁[0e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(30 φ) ^(₃) ^(+φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₃) ^(+φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(+φ) ^(₄) ⁾ ,−e ^(j(φ) ^(₁) ^(+φ) ^(₄) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₂) ^(φ) ^(₃) ⁾ ,e ^(j(φ) ^(₁) ^(+φ) ^(₃) ⁾ ,−e ^(jφ) ^(₁) ^(+φ) ^(₂) ^()]) ^(T)

[0054] For multipaths with a relative delay equal to an even number of chips from the desired signal path, it can be shown that the ICIs are all equal to zero at the CCK Correlator 36 b output:

[C ^((−k))]^(H) C=[C ^((+k))]^(H) =C=0, if j=2,4, or 6.

[0055] Then, the overall ICI computation can be simplified to: $\begin{matrix} {{ICI} = {\sum\limits_{{k = 1},3,5,7}\left\{ {{{F_{k}^{*}\left\lbrack C^{({- k})} \right\rbrack}^{H}C} + {{B_{k}^{*}\left\lbrack C^{({+ k})} \right\rbrack}^{H}C}} \right\}}} \\ {\equiv {f\left( {\varphi_{2},\varphi_{3},\varphi_{4}} \right)}} \\ {\equiv {{f_{F}\left( {\varphi_{2},\varphi_{3},\varphi_{4}} \right)} + {f_{B}\left( {\varphi_{2},\varphi_{3},\varphi_{4}} \right)}}} \end{matrix}$

[0056] where

ƒ_(F)(φ₂,φ₃,φ₄)≡e ^(jφ) ^(₄) [e ^(jφ) ^(₂) (F ₇ *e ^(jφ) ^(₃) +F _(3*) e ^(−jφ) ^(₃) +2F ₅*),+e ^(−jφ) ^(₂) (−F ₅ *e ^(jφ) ^(₃) −F ₁ *e ^(−jφ) ^(₃) +2F ₃*)]

ƒ_(B)(φ₂,φ₃,φ₄)≡e ^(−jφ) ^(₄) [e ^(jφ) ^(₂) (−B ₁ *e ^(jφ) ^(₁) −B ₅ *e ^(−jφ) ^(₃) +2B ₃*)+e^(−jφ) ^(₁) (B ₃ *e ^(jφ) ^(₃) +B ₇ *e ^(−jφ) ^(₁) 2B ₅*)]  Eq. (2)

[0057] The functions, f_(F)(φ₂, φ₃, φ₄) and f_(B)(φ₂, φ₃, φ₄) are ICIs caused by precursors (items containing F_(i)'s) and postcursors (items containing B_(i)'s), respectively. Therefore, not only is the ICI from post-cursors canceled (as in Webster), but the ICI from pre-cursors is also canceled. In contrast, Webster did not address ICI due to post-cursors only.

[0058] Equation (2) is a function of the encoded phases, φ₂, φ₃, φ₄, only φ₁ has no impact on ICI). The CCK encoded phases, φ₂, φ₃, φ₄ each has one of the following four values: 0, π/2, π, or 3π/2. Therefore, there are 43=64 MPI outputs in Equation (2). As a result, the total number of MPI values for all 256 codewords is reduced from 256(=4⁴) as in Webster to 64(=4³) in the present invention. Thus, the architecture of the present invention provides for a reduction in the complexity of the hardware and for power savings. Further reductions to 32, 16, or 8 can be derived as follows.

[0059] The structure to calculate MPI outputs in Equation (2) is found to be similar to that which is used to calculate the 64 CCK correlation outputs (denoted as X_(i), i=1, 2, . . . , 64) in Equation (1). Equation (1) shows that:

[0060] (a) the number of MPI calculations can be reduced from 256 to 64,

[0061] (b) the MPIs can be computed jointly with an algorithm similar to the Fast Walsh Transform, and

[0062] (c) the CCK Correlator 36 b hardware can be reused for MPI computations.

[0063] The fast algorithm to compute the MPIs will be called “Fast Multipath Transform”, or FMT. A detailed description on the reuse of CCK Correlator 36 b hardware for MPI computations in the FMIC block 36 a will be described below.

[0064] The basic hardware building block that can be shared for a FMT in Mode 1 and a FWT in MODE 2 is denoted as a FMWT block and is illustrated in FIG. 7. The internal operations of the FMWT block require only complex additions (and no multiplication). The four complex outputs (from D₁ to D₄) are the additions of the real and/or imaginary parts of the two complex inputs (A₁ and A₂) as shown in Equations (3a) and (3 b) below. A control line is applied to select Mode 1 or 2. According to the selected mode, the four different complex outputs will be provided based on Equation (3a) or (3 b). The mathematical relationships between two complex inputs (A₁ and A₂) and four complex outputs (D₁, D₂, D₃ and D₄) are given by:

[0065] In Mode 1 (FMT outputs):

Re{D ₁ }=Re{A ₁ +A ₂ }=Re{A ₁ }+Re{A ₂}

Im{D ₁ }=Im{A ₁ +A ₂ }=Im{A ₁ }+Im{A ₂}

Re{D ₂ }=Re{jA ₁ −jA ₂ }=−Im{A ₁ }+Im{A ₂}

Im{D ₂ }=Im{jA ₁ −jA ₂ }=Re{A ₁ }−Re{A ₂}

Re{D ₃ }=Re{−A ₁ −A ₂ }=−Re{A ₁ }−Re{A ₂}

Im{D ₃ }=Im{−A ₁ −A ₂ }=−Im{A ₁ }−Im{A ₂}

Re{D₄ }=Re{−jA ₁ +jA ₂ }=Im{A ₁ }−Im{A ₂}

Im{D ₄ }=Im{−jA ₁ +jA ₂ }=−Re{A ₁ }+Re{A ₂}  Eq. (3a)

[0066] In Mode 2 (FWT outputs):

Re{D ₁ }=Re{A ₁ +A ₂ }=Re{A ₁ }+Re{A ₂}

Im{D ₁ }=Im{A ₁ +A ₂ }=Im{A ₁ }+Im{A ₂}

Re{D ₂ }=Re{jA ₁ +A ₂ }=−Im{A ₁ }+Re{A ₂}

Im{D ₂ }=Im{jA ₁ +A ₂ }=Re{A ₁ }+Im{A ₂}

Re{D ₃ }=Re{−A ₁ +A ₂ }=−Re{A ₁ }+Re{A ₂}

Im{D ₃ }=Im{−A ₁ +A ₂ }=−Im{A ₁ }+Im{A ₂}

Re{D ₄ }=Re{−jA ₁ +A ₂ }=Im{A ₁ }+Re{A ₂}

Im{D ₄ }=Im{−jA ₁ +A ₂ }=−Re{A ₁ }+Im{A ₂}  Eq. (3b)

[0067] where the notations, Re{ } and Im{ }, denote the real part and the imaginary part of the complex number inside the brackets and the complex scalar j is defined as the square-root of (−1). Therefore, no multiplication is required for this basic building block in both modes 1 and 2.

[0068] One may program the same hardware block to operate in either Mode 1 or Mode 2 as shown in FIG. 7, since Mode 1 and Mode 2 do not operate at the same time.

[0069] Furthermore, the number of MPI outputs can be reduced from 64 to 32 or 16 for all 256 codewords. One can observe from Equation (2):

ƒ₁(φ₂+π,φ₃,φ₄)=−ƒ₁(φ₂,φ₃,φ₄),φ₂=0 or π/2.  Eq. (4a)

[0070] From Equation (4a), it is not necessary to calculate the MPI outputs for the cases when encoded phase φ₄ is π or 3π/2. Similarly,

ƒ₁(φ₂φ₃,φ₄+π)=−ƒ₁(φ₂,φ₃,φ₄),φ₄=0 or π/2.  Eq. (4b)

ƒ₁(φ₂+π,φ₃,φ₄+π)=ƒ₁(φ₂,φ₃,φ₄),φ₂,φ₄=0 or π/2.  Eq. (4c)

[0071] From Equations (4b) and (4c), only two choices are necessary to calculate the MPI outputs for the encoded phases φ₂ or φ₄. Since there are four choices to choose the encoded phase φ₃, the number of required MPI outputs is 4×2×2 or 16. All other 48 MPI outputs have the same absolute values as these 16 MPI outputs but may have a negative sign.

[0072] If the dominant ICI in a system is caused by the post-cursors (or the pre-cursors) only, the number of required MPI outputs can be further reduced to 8 using the following properties:

ƒ_(F)(φ₂,φ₃,φ₄)≡e ^(jφ) ^(₄) ƒ_(F1)(φ₂+π,φ₃)=−ƒ_(F1)(φ₂+π,φ₃)=−ƒ_(F1)(φ₂,φ₃)  Eq. (4d)

ƒ_(B)(φ₂,φ₃,φ₄)≡e ^(−jφ) ^(₄) ƒ_(B1)(φ₂,φ₃);ƒ_(B1)(φ₂+π,φ₃)=−ƒ_(B1)((φ₂,φ₃)  Eq. (4e)

[0073] For example, one only needs to calculate the function, f_(F1)(φ₂,φ₃) or f_(B1)(φ₂,φ₃), which has two choices of φ₂ and four choices of φ3 The complex scalar, exp(jφ₄), has one of the four values: 1, ,j, −1, or −j. In the practical hardware implementation, these operations are implemented by changing the (positive/negative) signs and/or by switching the real/imaginary parts of the values, i.e., without any calculations.

[0074] In short, it is required to first calculate the eight values of the function, f_(F1)(φ₂,φ₃), or f_(B1)(φ₂,φ₃), then the function, f_(F)(φ₂,φ₃,φ₄), or f_(B)(φ₂,φ₃,φ₄) can be obtained from changing the (positive/negative) signs and/or switching the real/imaginary parts of the function, f_(F1)(φ₂,φ₃), or f_(B1)(φ₂,φ₃).

[0075] Implementations of Equations (4a)-(4e) will be provided below as three embodiments. Other mathematically-equivalent embodiments based upon (but not limited to) Equation (2) are given by:

ƒ₃(φ₂,φ₃,φ₄)=e ^(j(φ) ^(₄) ^(+φ) ^(₂) ⁾(F ₇ *e ^(jφ) ^(₃) +F ₃ *e ^(−jφ) ^(₃) +2F ₅*)+e ^(j(φ) ₄ ^(−φ) ^(₂) ⁾(−F ₅ *e ^(jφ) ^(₃) −F ₁ *e ^(−jφ) ^(₃) +2F ₃*)+e ^(j(−φ) ^(₄) ^(+φ) ^(₂) ⁾(−B ₁ *e ^(jφ) ^(₃) −B ₅ *e ^(−jφ) ^(₃) +2B ₃*)+e ^(−j(φ) ^(₄) ^(+φ) ^(₂) ⁾(B ₃ *e ^(jφ) ₃ +B ₇ *e ^(−jφ) ^(₃) ₊₂ B ₅*)

ƒ₃(φ₂,φ₃,φ₄)=e ^(jφ) ^(₄) {[F ₇ *e ^(jφ) ^(₂) ^(+φ) ^(₃) ⁾ +F ₃ *e ^(−j(φ) ^(₂) ^(−φ) ₃ ⁾+2F ₅ *e ^(jφ) ₂ ]+[−F ₅ *e ^(j(−φ) ^(₂) ^(+φ) ^(₃) ⁾ −F ₁ *e ^(−j(φ) ^(_(2+φ)) ^(₃₎) 2F ₃ *e ^(−jφ) ^(₂) ]}+e ^(−jφ) ^(₄) {[−B ₁ *e ^(j(φ) ^(₂) ^(+φ) ^(₃) ⁾ −B ₅ *e ^(j(φ) ^(₂) ^(−φ) ^(₃) ⁾+2B ₃ *e ^(jφ) ^(₂) ]+[B ₃ *e ^(j(−φ) ^(₂) ^(+φ) ^(₃) ⁾ +B ₇ *e ^(−j(φ) ^(₂) ^(+φ) ^(₃) ⁾2B ₅ *e ^(−jφ) ^(₂) ]}  Eq. (5b)

ƒ₄(φ₂,φ₃,φ₄)=e ^(jφ) ^(₂) [F ₇ *e ^(j(φ) ^(₄) ^(+φ) ^(₃) ⁾ +F ₃ *e ^(−j(φ) ^(₄) ^(−φ) ₃ ⁾+2F ₅ *e ^(jφ) ^(₄) ]+e ^(−jφ) ^(₂) [−F ₅ *e ^(j(−φ) ^(₄) ^(−φ) ^(₃) ⁾−2F ₃ *e ^(jφ) ^(₄) ]+e ^(−jφ) ^(₂) [−B ₁ *e ^(j(−φ) ^(₄) ^(+φ) ^(₃) ⁾ −B ₅ *e ^(−j(φ) ^(₄) ^(−φ) ^(₃) ⁾+2B ₃ *e ^(−jφ) ^(₄) ]+e ^(−jφ) ^(₂) [B ₃ *e ^(j(−φ) ^(₄) ^(+φ) ^(₃) ⁾ +B ₇ *e ^(−j(φ) ^(₄) ^(+φ) ^(₃) ⁾2B ₅ *e ^(−jφ) ^(₄) ]  Eq. (5c)

ƒ₅(φ₂,φ₃,φ₄)=[F ₇ *e ^(j(φ) ^(₄) ^(+φ) ^(₃) ⁾ +F ₃ *e ^(−j(φ) ^(₄) ^(+φ) ^(₂) ^(−φ) ^(₃) ⁾+2F ₅ *e ^(j(φ) ^(₄) ^(+φ) ^(₂) ]+[−F ₅ *e ^(j(−φ) ^(₄) ^(−φ) ^(₂) ^(+φ) ^(₃) ⁾ −F ₁ *e ^(j(φ) ^(₄) ⁻ ^(−φ) ^(₂) ^(−φ) ^(₃) ⁾2F ₃ *e ^(j(φ) ^(₄) ^(−φ) ^(₂) ⁾ ]+[−B ₁ *e ^(j(−φ) ^(₄) ^(+φ) ^(₂) ^(+φ) ^(₃) ⁾ −B ₅ *e ^(−j(φ) ^(₄) ^(−φ) ^(₂) ^(−φ) ^(₃) ⁾+2B ₃ *e ^(j(−φ) ^(₄) ^(+φ) ^(₂) ⁾ ]+[B ₃ *e ^(j(−φ) ^(₄) ^(+φ) ^(₂) ^(+φ) ^(₃) ⁾ +B ₇ *e ^(−j(φ) ^(₄) ^(+φ) ^(₂) ^(+φ) ^(₃) ⁾2B ₅ *e ^(−j(φ) ^(₄) ^(+φ) ^(₂) ⁾]  Eq. (5d)

[0076] Since there are no common factors in Equations (5a)-(5d) among items, the FMT algorithm cannot be applied to evaluate the 64 (or 32 or 16) MPI outputs in Equations (5a)-(5d). More hardware complexity is therefore required to compute the MPIs using any one of the Equations (5a)-(5d) when compared to the FMT implementation based on Equation (2). However, each embodiment in Equations (5a)-(5d) requires much less hardware complexity and processing time than those required in Webster, which requires all 256 MPIs to be computed.

[0077]FIG. 8 illustrates the structure of a CCK Correlator 36 b using the FMWTs as the basic building blocks. The control line provides a Mode 2 indication to all FMWT blocks. The eight chips, r₁, r₂, . . . , r₈, from the outputs of the MUX 34 are fed into the complex operators block 48. These complex operators are required to prepare the received signals for correlation operations. The eight inputs and eight outputs of the complex operators block 48 are shown in FIG. 8. The notations, star ‘*’ and minus ‘−’ denote the complex conjugate and the complex negative of a complex number, respectively. Three steps (shown in FIG. 8 as “Step 1”, “Step 2” and “Step 3”) are then required to compute the 64 correlation outputs jointly. All inputs, outputs, and connections (e.g., a_(i), where i=1, . . . , 16, and b_(j), where j=1, . . . , 32) are labeled in FIG. 8. The 64 CCK correlation outputs (denoted as X_(i), i=1, 2, . . . , 64) are fed to the MIC & MS block 46. Since only FMWT blocks are used, the overall calculations in FIG. 8 are free of multiplications. With FMWT as its basic building block, this implementation of a CCK Correlator 36 b is based on the Fast Walsh Transform with the following advantages: (a) the 64 CCK correlation outputs are “jointly” (but not independently) calculated, and (b) the number of complex calculations is minimized because all common factors of all 64 correlations are calculated only once in the intermediate steps.

[0078]FIG. 9 illustrates the operation of the MIC & MS block 46. The 64 CCK correlation outputs (denoted as X_(i), i=1, 2, . . . , 64) from the CCK Correlator 36 b are expanded into 256 CCK correlations for a total of 256 codewords. The corresponding MPI (only the real part is needed although not shown in FIG. 9) for each codeword is subtracted from the 256 CCK correlation outputs. A Maximum Selector block 50 will find the index (between 1 and 256) of the codeword which has the real maximum correlation (only the real-part of the complex correlation results will be compared in maximum selection although not shown in FIG. 9). FIG. 9 does show that, in the present invention, only 64 MPI outputs (from FMIC block 36 a) are needed for all 256 codewords from the mathematical derivations. In contrast, Webster requires 256 ICI bias for MPI cancellations.

[0079] In summary, the present invention derives a mathematical equation, Equation (2), which provides an optimal algorithmic structure (FMT) to compute MPIs required for ICI cancellations. The algorithm jointly computes the ICI of a plurality of possible codewords. This algorithmic structure is similar to the optimal architecture (FWT) required for CCK correlation computations. One can, therefore, take advantage of this similarity between these two structures and reuse essentially the same hardware at different times. Other mathematically equivalent embodiments to Equation (2) are characterized by Equations (5a)-(5d). One can use any of the Equations (5a)-(5d) to show that the number of required MPI outputs for ICI cancellation is also reduced from 256 to 64. From Equations (2), or (5 a)-(5d), one can derive the symmetry properties shown in Equations (4a)-(4e). With these symmetry properties, one needs to compute only 32, 16, or 8 of the 64 MPIs and then derive all 64 MPIs based on Equations (4a)(4e).

[0080]FIGS. 10, 11 and 12 illustrate three embodiments of FMIC blocks computing 64, 32, and 16 MPI outputs, respectively. Each one has an MPI mapper to generate the permuted MPIs. A table illustrating the inputs and outputs of the MPI mappers for FIGS. 10-12 is set forth in FIG. 14.

[0081] One first embodiment of the FMIC block 36 a of FIG. 4 is illustrated in FIG. 10 in the form of FMIC block 36 aa. Any CCK receiver requires a CCK Correlator 36 b. The same FMWT blocks for the CCK Correlator 36 b operating in Mode 2 can be reused, as shown in the FMIC block 36 a operating in Mode 1, to compute the 64 MPIs. The eight inputs (four FF taps and four FB taps) to the FMIC block 36 aa are outputs from the CIR Estimation block 24. The complex operators block 48 aa performs simple mathematical operations such as complex conjugates, complex negative, and a multiplication by 2 (a 1-bit shift only without multiplications) on the inputs. When compared with the hardware used in the CCK Correlator 36 b in FIG. 8, the FMIC block 36 aa includes sixteen additional complex adders 52 aa that are coupled to the outputs of the four FMWT blocks in Step 1. Twelve complex outputs of the complex operators block 48 aa are inputted to the first four FMWT blocks and the 16 additional complex adders 52 aa. An MPI Mapper I block 44 aa is applied to generate the permuted MPIs. The 64 permuted MPI outputs, Y_(i)(i=1, . . . , 64), are provided to the MIC & MS block 46. In practical implementations, the 64 outputs c_(i) from the last sixteen FMWT blocks can be connected directly (without any “hardware” MPI Mapper I) to the corresponding subtractors in the MIC & MS block 46 of FIG. 9, so the MPI Mapper I block in FIG. 10 is shown only for illustrative purposes. Since only FMWT blocks and adders 52 aa are required by the embodiment shown in FIG. 10, this embodiment does not require the use of any multiplication operations.

[0082]FIGS. 11 and 12 illustrate alternative embodiments using FMIC blocks 36 bb and 36 cc, respectively. In these embodiments, one only needs to compute 32 or 16 MPI outputs. One can then derive all 64 MPIs based on the symmetry properties shown in Equation 4(a)-4(c). A table illustrating the relationship between the inputs and outputs based on Equations (4a)-(4 c) is set forth in FIG. 14. One can observe that the sixty-four outputs (Y_(i),i=1, 2, . . . , 64) of Mapper I block 44 aa are permutations of 64 inputs (c_(i),i=1, 2, . . . , 64). On the other hand, the sixty-four outputs (Y_(i),i=1, 2, . . . , 64) of Mapper II block 44 bb are permutations of 32 inputs only (c_(i),i=1-8, 17-24, 33-40, and 49-56). Finally, the sixty-four outputs (Y_(i),i=1, 2, . . . , 64) of Mapper III block 44 cc are permutations of 16 inputs and their complex negatives (c_(i),i=1, 2, 5, 6, 17, 18, 21, 22, 33, 34, 37, 38, 49, 50, 53, and 54).

[0083] Since it is not necessary to calculate all 64 MPI outputs, it is desirable to deactivate the unnecessary outputs and FMWT blocks in practical implementations. A half FMWT, block shown in FIG. 13, is a partially de-activated FMWT block (with 2 of 4 outputs deemed unnecessary and therefore not shown). Specifically; one only needs the first two complex outputs of Equation (3a):

Re{D ₁ }=Re{A ₁ +A ₂ }=Re{A ₁ }+Re{A ₂}

Im{D ₁ }=Im{A ₁ +A ₂ }=Im{A ₁ }+Im{A ₂}

Re{D ₂ }=Re{jA ₁ −jA ₂ }=−Im{A ₁ }+Im{A ₂}

Re{D ₂ }=Im{jA ₁ −jA ₂ }=Re{A ₁ }−Re{A ₂}  Eq. (6)

[0084] This (multiplication-free) half FMWT block operates in Mode 1 only.

[0085] Referring now to the embodiment shown in FIG. 11, the FMIC block 36 bb has twelve FMWT blocks and eight half FMWT blocks. Only necessary outputs and FMWT blocks are shown. Deactivated FMWT blocks are not shown. Partially activated FMWT blocks are shown as half FMWT blocks with two inputs and two outputs. In FIGS. 8, 10, 11, and 12, the index for each output is preserved for easy reference (i.e., the indices of outputs and connections in FIGS. 8, 10, 11, and 12 can be cross-referenced). Thirty-two outputs, c_(i) (shown at the end of the last eight FMWT blocks) are mapped into 64 MPI outputs by the MPI Mapper II block 44 bb according to FIG. 14. The 64 MPI outputs are identical to the 64 MPI outputs obtained using the embodiment shown in FIG. 10.

[0086] Referring now to the embodiment shown in FIG. 12, the FMIC block 36 cc has four FMWT blocks and sixteen half FMWT blocks. Only necessary outputs and FMWT blocks are shown. Deactivated FMWT blocks are not shown. Partially activated FMWT blocks are shown as half FMWT blocks with two inputs and two outputs. Sixteen outputs, c, (shown at the end of the last eight half FMWT blocks) are mapped into 64 MPI outputs by the MPI Mapper III block 44 cc according to FIG. 14. The 64 MPI outputs are identical to the 64 MPI outputs obtained using the embodiment shown in FIG. 10.

[0087] The implementions of the FMIC block according to the present invention are not limited to those modeled based on Equations (2), (5 a)-(5d). Other implementations of FMIC blocks which are mathematically equivalent to Equations (2), (5 a)-(5d) are also encompassed within the scope of the present invention.

[0088] Thus, when compared with the RAKE receiver in Webster, the present invention provides numerous important advantages:

[0089] (1) The 64 MPI outputs for the FMIC block 36 a in the present invention are obtained from essentially the same hardware used for the CCK Correlator 36 b of FIG. 4.

[0090] (2) Only 64 (or 32, or 16 or even 8) MPI outputs are required for all 256 codewords, as opposed to 256 ICI outputs required by Webster for an optimal CCK Decoder.

[0091] (3) The 64 MPI outputs of the present invention are obtained from a structure similar to FWT which minimizes the required hardware (i.e., adders only), minimizes the number of complex calculations, and minimizes the processing time.

[0092] (4) While the 256 ICI outputs in Webster are calculated independently, the 64 MPI outputs in the present invention are jointly calculated. All common operations to obtain 64 (or 32 or even 16) different MPI outputs are calculated only once. Therefore, the number of operations is minimized.

[0093] (5) No multiplication operations are required for the present invention.

[0094] (6) In the present invention, the MPI from pre-cursors and post-cursors are calculated from the Feed-Forward (FF) and Feedback (FB) taps. In contrast, in Webster, only the MPI from post-cursors are calculated from only the FB taps. Therefore, the present invention can cancel more interference when compared to the architecture in Webster.

[0095] Those skilled in the art will appreciate that the embodiments and alternatives described above are non-limiting examples only, and that certain modifications can be made without departing from the spirit and scope thereof. The accompanying claims are intended to cover such modifications as would fall within the true scope and spirit of the present invention. 

What is claimed is:
 1. A RAKE receiver for a direct sequence spread spectrum receiver employable in a multipath environment, the receiver receiving Complementary Code Keying (CCK) symbols, comprising: channel estimation means for determining a channel impulse response based on the received CCK symbol, and generating feedback tap weights and feed-forward tap weights; multipath estimation means coupled to the feedback tap weights and feed-forward tap weights for jointly calculating a plurality of multipath interferences which is a post-correlation representation of intra-codeword chip interference (ICI) for the received CCK symbol; and decoding means coupled to receive the plurality of multipath interferences for canceling the ICI from the previous CCK symbol.
 2. Apparatus of claim 1, further including: a channel matched filter that receives codewords of the CCK symbols; a CCK remodulator that receives the output of the decoding means and which provides a remodulated output; a differential combiner having a first input coupled to the channel matched filter and a second input that receives the remodulated output, the differential combiner providing an output that is coupled to the multipath estimation means; and wherein the multipath estimation means also functions as a CCK correlator when the multipath estimation means receives the output from the differential combiner.
 3. Apparatus of claim 2, further including: means positioned between the channel estimation means and the multipath estimation means, and between the differential combiner and the multipath estimation means, for routing either the tap weights from the channel estimation means or the output of the differential combiner to the multipath estimation means.
 4. Apparatus of claim 1, wherein the decoding means finds an index of a CCK codeword having the maximum correlation between the received CCK symbol and all possible CCK codewords.
 5. Apparatus of claim 1, wherein the decoding means includes: mapping means coupled to receive the output of the multipath estimation means for permuting and storing the output of the multipath estimation means.
 6. Apparatus of claim 2, wherein the decoding means includes: means coupled to receive the output of the CCK correlator for canceling the ICI from the previous CCK symbol, and for finding an index of a CCK codeword having the maximum correlation between the received CCK symbol and all possible CCK codewords.
 7. A method for computing the Intra-Codeword Interference (ICI) distortion of a received encoded symbol at the output of the codeword correlator, the method comprising: jointly computing the ICI of a plurality of possible codewords.
 8. The method of claim 7, wherein the ICI distortion is caused by signals passing through a multipath channel.
 9. The method of claim 7, wherein the received encoded symbol is encoded by a plurality of complex chips.
 10. The method of claim 7, further including: providing a codeword correlator which computes the correlation of the received encoded symbol with a plurality of possible codewords.
 11. The method of claim 7, wherein the jointly computing step includes: computing the ICI distortions due to multipath by adding the ICI distortions due to each multipath at the output of a codeword correlator.
 12. The method of claim 11, wherein the ICI distortions due to a particular multipath are computed from the auto-correlation of a plurality of possible codewords with the corresponding multipath gains.
 13. The method of claim 12, wherein the auto-correlation is the correlation between a shifted codeword and an unshifted codeword.
 14. The method of claim 13, wherein the shifted codeword is a codeword that is shifted forward or backward to simulate a pre-cursor or a post-cursor multipath, respectively.
 15. The method of claim 7, wherein the received encoded symbol is CCK encoded, with each encoded CCK symbol containing eight complex chips.
 16. A method for computing the Intra-Codeword Interference (ICI) distortion of a received symbol, the method comprising: providing a shared circuit that operates in two modes at different times; wherein in a first mode the shared circuit is a multipath interference cipher that receives feedback tap weights and feed-forward tap weights, and jointly calculates a plurality of multipath interferences which is a post-correlation representation of ICI for the received symbol; and wherein in a second mode the shared circuit is a CCK correlator that receives chips of the received symbol and calculates the correlations of the received chips and a plurality of codewords. 